# 1.快速统计:
# 快速统计字符串每个元素出现的次数： 如"abcevaefegsgdghfdefavbdr"， “a”:x,"b":y
# 2.降序切割:
# 快速统计字符串每个元素出现的次数： 如"abcevaefegsgdghfdefavbdr"， “a”:x,"b":y，根据出现的次数降序排列，并且列出出现次数最多的三个元素

list1 = 'abcevaefgegsgdghfdefavbdr'


def cout(strlist: str):
    str_dict = dict()
    for i in strlist:
        str_dict[i] = str_dict.setdefault(i, 0) + 1

    print(str_dict)

    sortlist = sorted(['{}{}'.format(v, k) for k, v in str_dict.items()], key=str, reverse=True)
    for j in range(3):
        print('排名第{}的{}出现{}'.format(j + 1, sortlist[j][1], sortlist[j][0]))


cout(list1)
# 完成的不错
# n = 1  #增强版
# maxnum = sortlist[0][0]
# while True:
#     for j in sortlist:
#         if j[0] == maxnum:
#             print('排名第{}的元素{}出现{}次'.format(n, j[1], j[0]))
#         else:
#             n += 1
#             if n > 3:
#                 break
#             maxnum = j[0]
#             print('排名第{}的元素{}出现{}次'.format(n, j[1], j[0]))
